/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package Datos.DB;

import Datos.Persona;
import Datos.Supervisor;
import Excepciones.ActualizarDatosSupervisorException;
import Excepciones.BuscarDatosAdministradorException;
import Excepciones.BuscarDatosSupervisorException;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;

/**
 *
 * @author Administrador
 */
public class SupervisorDB {
    
public void grabarSupervisor(Supervisor sp) throws SQLException{
    grabarPersona(sp);
    grabarSupervisorTabla(sp);
    grabarUsuario(sp);
    grabarPersonaUsuario(sp);
    
}
public boolean grabarPersona(Supervisor sup) throws SQLException {
        OperacionesBase db = new OperacionesBase();
        
        String query = "insert into persona(cedula, nombre, direccion, telefono) " +
                "values('"+sup.getCedula()+"', '"+sup.getNombre()+"', '" + 
                sup.getDireccion() +"', '"+sup.getTelefono() +"');";
        Boolean resultado = db.ingreso(query);
        db.cerrarConexion();
        return resultado;
}

public boolean grabarUsuario(Supervisor sup) throws SQLException {
        OperacionesBase db = new OperacionesBase();
        
        String query = "insert into usuario(nick, clave) " +
                "values('"+sup.getUsuario().getNombreUsuario()+"', '"+sup.getUsuario().getContraseña() + "' );";
        Boolean resultado = db.ingreso(query);
        db.cerrarConexion();
        return resultado;
}

public boolean grabarPersonaUsuario(Supervisor sup) throws SQLException {
        OperacionesBase db = new OperacionesBase();
        
        String query = "insert into personausuario(idpersona, idusuariop) " +
                "values('"+sup.getCedula()+"', '"+sup.getUsuario().getNombreUsuario()+ "' );";
        Boolean resultado = db.ingreso(query);
        db.cerrarConexion();
        return resultado;
}

public boolean grabarSupervisorTabla(Supervisor sup) throws SQLException {
        OperacionesBase db = new OperacionesBase();
        
        String query = "insert into supervisor(cedula) values('"+sup.getCedula()+"')";
        Boolean resultado = db.ingreso(query);
        db.cerrarConexion();
        return resultado;
}

public boolean grabarSupervisorEmergenciaRepresentante(Integer numEmer,String sup,String rep) throws SQLException {
        OperacionesBase db = new OperacionesBase();
        String query = "insert into representanteemergenciasupervisor(idrepresentante, idsupervisor, idemergencia) values('"+rep+"', '"+sup+"' ,"+numEmer+")";
        Boolean resultado = db.ingreso(query);
        db.cerrarConexion();
        return resultado;
}
public boolean GrabarIncidenteSupervisorEmergencia(Integer numEmer,String sup,String tipo) throws SQLException {
        OperacionesBase db = new OperacionesBase();
        System.out.println(numEmer+" "+sup+" "+tipo);
        String query = "insert into incidentesupervisoremergencia(idemergencia, idincidente, idsupervisor) values("+numEmer+", '"+tipo+"' ,'"+sup+"')";
        Boolean resultado = db.ingreso(query);
        db.cerrarConexion();
        return resultado;
}

public int modificar(Supervisor ad) throws SQLException, ActualizarDatosSupervisorException {
    try{
        OperacionesBase db = new OperacionesBase();
        String query="update persona set nombre='" + ad.getNombre() + "', direccion='" + ad.getDireccion()+ "', telefono='"+ad.getTelefono()+"' where persona.cedula='"+ad.getCedula()+"'";
        int resultado = db.modificacioneliminacion(query);
        db.cerrarConexion();
        return resultado;
    } catch (SQLException ex) {
        System.out.println(ex.getMessage());
        throw new ActualizarDatosSupervisorException("Error encontrado al modificar el Administrador");
     }
}

public Supervisor buscar(String nick) throws SQLException, BuscarDatosSupervisorException {
     try {
        OperacionesBase db = new OperacionesBase();
        String query="select * from usuario where nick ='" + nick+"'";        
        ResultSet resultado = db.seleccion(query);
        Supervisor op=new Supervisor();
        if (resultado!=null) {
            resultado.next();
            op.getUsuario().setNombreUsuario(resultado.getString(1));
            op.getUsuario().setContraseña(resultado.getString(2));
        } 
        query="select persona.cedula, persona.nombre, persona.direccion, persona.telefono from personausuario,persona where personausuario.idusuariop='" + nick +"' and personausuario.idpersona=persona.cedula";
        resultado = db.seleccion(query);
        if (resultado!=null) {
            resultado.next();
            op.setCedula(resultado.getString(1));
            op.setNombre(resultado.getString(2));
            op.setDireccion(resultado.getString(3));
            op.setTelefono(resultado.getString(4));
        } 
        query="select * from supervisor where cedula ='" + op.getCedula()+"'";
        resultado = db.seleccion(query);
        if (resultado!=null) {
            resultado.next();
            op.setCedula(resultado.getString(1));
        } 
        db.cerrarConexion();
        return op;
      } catch (SQLException BuscarDatosSupervisorException) {
            System.out.println(BuscarDatosSupervisorException.getMessage());
            throw new BuscarDatosSupervisorException("Error encontrado al buscar el Administrador");
            
        }  
        
    }



public ArrayList buscarSup() throws SQLException {
        OperacionesBase db = new OperacionesBase();
        ArrayList datos=new ArrayList();
        String query="select * from supervisor";        
        ResultSet resultado = db.seleccion(query);
        Supervisor op=new Supervisor();
        while (resultado.next()) {
            op.setCedula(resultado.getString(1));
            datos.add(op.getCedula());
        }
        db.cerrarConexion();
        return datos;
        
    }



public ArrayList listar() throws SQLException {
        OperacionesBase db = new OperacionesBase();
        String query="select persona.cedula, persona.nombre, persona.direccion, persona.telefono from persona,supervisor where persona.cedula=supervisor.cedula ";
        ResultSet resultado = db.seleccion(query);
        Persona per=null;
        ArrayList personas=new ArrayList();
        while (resultado.next()) {
            per=new Persona();
            per.setCedula(resultado.getString(1));
            per.setNombre(resultado.getString(2));
            per.setDireccion(resultado.getString(3));
            per.setTelefono(resultado.getString(4));
            personas.add(per);
        }
        db.cerrarConexion();
        return personas;
    }

}

